package com.example.itext.PDF水印;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;

import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.draw.LineSeparator;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import static com.itextpdf.text.Element.*;
import static com.itextpdf.text.Rectangle.NO_BORDER;

public class itext {
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        Document document = new Document();

        PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("D:\\javaIdea\\IDEAPDF\\水印.pdf"));

        document.open();

        // 获取页码
        pdfWriter.getPageNumber();

        pdfWriter.setPageEvent(new PdfPageEventHelper(){

            @Override
            public void onStartPage(PdfWriter writer, Document document) {
                // 这个newPage之后执行的

                // 水印字体
                ColumnText.showTextAligned(writer.getDirectContent(), ALIGN_RIGHT, new Phrase("aaaa"),
                        20, 20, 0);

//                writer.getDirectContent().addImage();  这个可以添加图片

                // 这个是行分割符号
                LineSeparator lineSeparator = new LineSeparator();
                // drawLine的参数：PdfContentByte canvas, float leftX, float rightX, float y
                // leftX代表的是要画的这个线相对这个PDF页面的长度
                // rightX 代表的是：这条线的X的坐标
                // y 代表的是：这条线y的坐标
                lineSeparator.drawLine(writer.getDirectContent(),document.getPageSize().getWidth(),0,60);
            }

            @Override
            public void onEndPage(PdfWriter writer, Document document) {
                // 这个是newPage之前执行的
                System.out.println("b：" +  writer.getPageNumber());
            }

            public void onCloseDocument(PdfWriter writer, Document document) {
                // 执行documnet.close方法之前还会执行一次onCloseDocument方法，
                // 但是执行onCloseDocument方法前，之前还会先执行onEndPage方法一次才轮到onCloseDocument方法
                // 也就是说，documnet.close的时候：是先 onEndPage --> onCloseDocument --> documnet.close
                System.out.println("关闭文档");
            }
        });

        document.add(new Paragraph("a"));

        document.newPage();

        document.add(new Paragraph("b"));

        document.close();

        pdfWriter.close();

    }
}
